#ifndef GEOMETRY_H
#define GEOMETRY_H

#include "mvc/model/station.h"
#include "mvc/model/AGeometry.h"
#include "common/exceptions.h"

#include <QVector>

class Point3D;

class Geometry : public AGeometry
{
    public:
        Geometry();
        virtual ~Geometry();
        void calculate_points();
        int rows() const;
        int cols() const;
        int total_points(bool repeat) const;
        int total_components() const;
        const QVector<Point3D *> &get_points(bool repeat) const;
        void add_component(AGeometry *);
        void remove_component(AGeometry *);
        const AGeometry *get_component(int) const throw (Non_Existent_Geometry);
    private:
        mutable QVector<Point3D *> geometry;
        QVector<AGeometry *> _components;
};

#endif // GEOMETRY_H
